package model

import "time"

/*

CREATE TABLE `order` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `userId` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '用户id',
  `orderId` bigint(20) unsigned NOT NULL COMMENT '订单id',
  `subject` varchar(255) NOT NULL DEFAULT '' COMMENT '订单描述',
  `amount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '支付金额',
  `monthCount` int(11) NOT NULL DEFAULT '0' COMMENT '购买时长，按月',
  `startDate` varchar(30) NOT NULL DEFAULT '' COMMENT '开始日期',
  `endDate` varchar(30) NOT NULL DEFAULT '' COMMENT '结束日期',
  `payStatus` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '支付状态:待支付(pending),支付完成(paid),支付失败(fail)',
  `paidTime` timestamp NULL DEFAULT NULL COMMENT '支付完成时间',
  `failTime` timestamp NULL DEFAULT NULL COMMENT '支付失败时间',
  `cancelTime` timestamp NULL DEFAULT NULL COMMENT '订单取消时间',
  `status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '订单状态：1、正常；2、取消',
  `createdAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updatedAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `order_id` (`orderId`),
  KEY `index_user_id` (`userId`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='订单表';

todo 写一个gorm的model
*/

type Order struct {
	ID         int64      `gorm:"column:id;primaryKey" json:"id"`
	UserID     int64      `gorm:"column:userId;not null;comment:用户id" json:"userId"`
	OrderID    int64      `gorm:"column:orderId;not null;comment:订单id" json:"orderId"`
	Subject    string     `gorm:"column:subject;not null;comment:订单描述" json:"subject"`
	Amount     float64    `gorm:"column:amount;not null;default:0.00;comment:支付金额" json:"amount"`
	MonthCount int32      `gorm:"column:monthCount;not null;comment:购买时长，按月" json:"monthCount"`
	StartDate  string     `gorm:"column:startDate;not null;comment:开始日期" json:"startDate"`
	EndDate    string     `gorm:"column:endDate;not null;comment:结束日期" json:"endDate"`
	PayStatus  string     `gorm:"column:payStatus;not null;comment:支付状态:待支付(pending),支付完成(paid),支付失败(fail)" json:"payStatus"`
	PaidTime   *time.Time `gorm:"column:paidTime;comment:支付完成时间" json:"paidTime"`
	FailTime   *time.Time `gorm:"column:failTime;comment:支付失败时间" json:"failTime"`
	CancelTime *time.Time `gorm:"column:cancelTime;comment:订单取消时间" json:"cancelTime"`
	Status     int8       `gorm:"column:status;not null;default:1;comment:订单状态：1、正常；2、取消" json:"status"`
	CreatedAt  time.Time  `gorm:"column:createdAt;default:CURRENT_TIMESTAMP;comment:创建时间" json:"createdAt"`
	UpdatedAt  time.Time  `gorm:"column:updatedAt;default:CURRENT_TIMESTAMP;comment:更新时间" json:"updatedAt"`
}

func (Order) TableName() string {
	return "order"
}
